home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / vbcc / machines / amiga68k / include / stdio.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-10-20  |  4.0 KB  |  120 lines

  1. /*  Header fuer vbcc Amiga-Version  */
  2. /*  stdio.h, teilweise angeregt aus K&R */
  3.  
  4. #ifndef __STDIO_H
  5. #define __STDIO_H 1
  6.  
  7. #define EOF (-1)
  8.  
  9. #define BUFSIZ 1024L            /*  Groesse des Buffers             */
  10. #define FOPEN_MAX   1024        /*  eigentlich auf Amiga beliebig   */
  11.  
  12. #define _IOFBF 1L               /*  Volles Buffering                */
  13. #define _IOLBF 2L               /*  Zeilenbuffer                    */
  14. #define _IONBF 3L               /*  kein Buffer                     */
  15.  
  16. #define HASBUF 1L               /*  hat einen Buffer                */
  17. #define NOBUFMEM 2L             /*  kein Buffer belegbar            */
  18.                                 /*  Returncodes von setvbuf         */
  19.  
  20. #define SEEK_SET -1             /*  fseek relativ zu Dateibeginn    */
  21. #define SEEK_CUR  0             /*                   akt. Pos.      */
  22. #define SEEK_END  1             /*                   Dateiende      */
  23.  
  24. #define _READ 1                 /*  Flags fuer FILE.flags, Lesen    */
  25. #define _WRITE 2
  26. #define _UNBUF 4                /*  ungepuffert                     */
  27. #define _EOF 8                  /*  Fileende                        */
  28. #define _ERR 16                 /*  Fehler                          */
  29. #define _READABLE 32
  30. #define _WRITEABLE 64
  31.  
  32. typedef struct _iobuf           /*  FILE-Struktur                   */
  33. {
  34.     char *filehandle;           /*  AmigaDos-Filehandle             */
  35.     char *pointer;              /*  Zeiger auf naechstes Zeichen    */
  36.     char *base;                 /*  Adresse des Buffers             */
  37.     struct _iobuf *next;        /*  Zeiger auf naechste Struktur    */
  38.     struct _iobuf *prev;        /*  tja, was wohl...                */
  39.     int count;                  /*  Anzahl Zeichen im Buffer        */
  40.     int flags;                  /*  Zugriffsmode                    */
  41.     int bufsize;                /*  Groesse des Buffers             */
  42. } FILE;
  43.  
  44. /*  stdin/out/err muss von _main() initialisiert werden     */
  45. extern FILE *stdin, *stdout, *stderr;
  46.  
  47. int _fillbuf(FILE *),_putbuf(int,FILE *),_flushbuf(FILE *);
  48.  
  49.  
  50. #define L_tmpnam        30
  51. #define TMP_MAX FOPEN_MAX
  52.  
  53. #define FILENAME_MAX 107
  54.  
  55. #ifndef __SIZE_T
  56. #define __SIZE_T 1
  57. typedef unsigned long size_t;
  58. #endif
  59.  
  60. #ifndef __FPOS_T
  61. #define __FPOS_T 1
  62. typedef long fpos_t;
  63. #endif
  64.  
  65. #ifndef __STDARG_H
  66. #include <stdarg.h>
  67. #endif
  68.  
  69. FILE *fopen(const char *,const char *);
  70. FILE *freopen(const char *,const char *,FILE *);
  71. int fflush(FILE *);
  72. int fclose(FILE *);
  73. int unlink(char *);
  74. int rename(const char *,const char *);
  75. FILE *tmpfile(void);
  76. char *tmpnam(char *);
  77. int setvbuf(FILE *,char *,int,size_t);
  78. void setbuf(FILE *,char *);
  79. int fprintf(FILE *, const char *, ...);
  80. int printf(const char *, ...);
  81. int sprintf(char *, const char *,...);
  82. int vprintf(const char *,va_list);
  83. int vfprintf(FILE *,const char *,va_list);
  84. int vsprintf(char *,const char *,va_list);
  85. int fscanf(FILE *, const char *, ...);
  86. int scanf(const char *, ...);
  87. int sscanf(const char *, const char *, ...);
  88. int vscanf(const char *,va_list);
  89. int vfscanf(FILE *,const char *,va_list);
  90. int vsscanf(const char *,const char *,va_list);
  91. char *fgets(char *, int, FILE *);
  92. char *gets(char *);
  93. int puts(const char *);
  94. int ungetc(int,FILE *);
  95. size_t fread(void *,size_t,size_t,FILE *);
  96. size_t fwrite(void *,size_t,size_t,FILE *);
  97. int fseek(FILE *,long,int);
  98. long ftell(FILE *);
  99. int fgetpos(FILE *,fpos_t *);
  100. int fsetpos(FILE *,const fpos_t *);
  101. int perror(char *);
  102. int fgetc(FILE *);
  103. int fputc(int,FILE *);
  104.  
  105. #define getc(p) (--(p)->count>=0?(unsigned char)*(p)->pointer++:_fillbuf(p))
  106. #define putc(x,p) (--(p)->count>=0?(unsigned char)(*(p)->pointer++=(x)):_putbuf((x),p))
  107. #define getchar() getc(stdin)
  108. #define putchar(x) putc(x,stdout)
  109.  
  110. /*  einige der Makros muessen wohl durch echte Funktionen ersetzt werden    */
  111. #define feof(p)         ((p)->flags&_EOF)
  112. #define ferror(p)       ((p)->flags&_ERR)
  113. #define fileno(p)       ((p)->filehandle)       /*  macht das Sinn? */
  114. #define clearerr(p)     ((p)->flags&=~(_ERR|_EOF))
  115.  
  116. #define fsetpos(f,ptr)  fseek((f),*(ptr),SEEK_SET)
  117.  
  118. #endif
  119.  
  120.